Using a three-dimensional sensor panel in determining a direction of a gesture cycle

ABSTRACT

A system includes a 3D sensor panel for detecting a plurality of 3D positions corresponding to a finger movement and a controller. The controller determines that the plurality of 3D positions contain a gesture cycle by comparing a first set of positions in the plurality of 3D positions that includes at least two non-adjacent positions in the plurality of 3D positions and, upon determining that the first set of positions in the plurality of 3D positions match, determining that the plurality of positions contain the gesture cycle. the controller determines a direction of the gesture cycle based on a second set of positions in the plurality of 3D positions, where the direction is relative to the 3D sensor panel, and creates a gesture cycle record for the gesture cycle, the gesture cycle record comprising the plurality of 3D positions and the direction.

BACKGROUND OF THE INVENTION Field

This invention relates generally to media players, and morespecifically, to navigating media content using repetitive 3-D gestures.

Related Art

Users have been fascinated with virtual reality and augmented realitytechnologies and products. These technologies and products allow usersto see something users typically do not see. Virtual or augmentedreality products typically include a device or gadget, covering one orboth eyes of the user so that the gadget can present an image differentfrom what the users would normally see. Some examples are binoculars,night vision goggles, high-power magnifying glasses which allow users tosee afar, very small objects, blurry objects, or objects in the dark.Other examples, such as kaleidoscopes and slide film viewers, present adifferent world of images from where the viewer is. These gadgets do notanticipate that viewers will interact with the presented object. Most ofthe gadgets have buttons, wheels, sliders or other physical control forviewers to change a slide or to adjust a setting.

Since the advances of computer video games, many iterations of HMD(head-mounted display) devices, in a form of a headset or helmet, areintroduced to allow a viewer, or gamer, to play games in an immersedvirtual reality manner, i.e. without seeing the physical surrounding.The newer HMD devices are similar to previous gadgets in that gamers arepresented a vision different from reality in an enclosed or simulatedmanner. Earlier HMD headsets include Sega™ VR, and more recent HMDheadsets include Oculus Rift™, HTC Vive™, Samsung Gear VR®, Microsoft™HoloLens. These headsets require a gamer to interact with objects beingdisplayed in order to play a game or to control the object. HoloLensuses a free hand gesture technology while the others use handheldcontrollers or touch pads. HoloLens allows a user to, from the user'spoint of view, act upon the object spatially with her hands. Forexample, to turn a knob, the user would hold her hand in a semi-closedmanner around the knob, which is visible only through the HoloLens, andturns her hand.

However, if a user is watching a movie in such an HMD device and wantsto fast forward the movie, the user may have to locate a fast forwardbutton on the handheld controller, to move the cursor to the fastforward button using the touch pad, or to put the hand on the fastforward button on the display. The user may then have to press the fastforward button, perhaps a few times to continue fast forwarding, or topress a different button to stop fast forwarding. Since the usertypically does not see her hand while wearing the HMD device, it wouldbe a challenge for her to find the right button or to use the touch pad.In the case of HoloLens, the fast forward button would be a small objectin her HoloLens visual view. It would also be a challenge for her topoint correctly to the button, when there would be many other controlbuttons such as play, pause, rewind, and exit buttons competing forspace in her HoloLens view.

In a different usage, while a user is reading an electronic document, ane-book or e-magazine, the user wants to skip a chapter or article. Theuser would flip multiple pages of the document. With a handheldcontroller the user is challenged, without seeing his fingers norcontroller, to find the proper button or sequence of buttons to performthe flipping task. With a touch pad, the user is challenged to swipe ina proper direction on the touch pad multiple times, without seeing thetouch pad nor his fingers.

In the above usage scenarios, it would be better if the device employs abetter natural user interface (NUI) to recognize free hand or touchless3D-gestures, particularly when such gestures are repeated to indicate acontinuous action onto a media content.

The above scenarios illustrate the need to present a media content inconjunction with repetitive touchless 3D-gestures.

BRIEF SUMMARY OF THE INVENTION

Disclosed herein is a method for detecting a repetitive 3-D gesture anda corresponding system and a computer readable storage medium asspecified in the independent claims. Embodiments of the presentinvention are given in the dependent claims. Embodiments of the presentinvention can be freely combined with each other if they are notmutually exclusive.

According to one embodiment of the present invention, in a method fordetecting a repetitive three-dimensional gesture by a computing device,a three-dimensional gesture sensor detects a plurality of positionscorresponding to a finger movement. The computing device determineswhether the plurality of positions contain a gesture cycle by: comparingat least two non-adjacent positions in the plurality of positions; andupon determining that the at least two non-adjacent positions match,determining that the plurality of positions contain the gesture cycle.Upon determining that the plurality of positions contains the gesturecycle, the computing device creates a gesture cycle record for thegesture cycle, creates a repetitive gesture record for a repetitivegesture, and stores the gesture cycle record in the repetitive gesturerecord.

In one aspect of the present invention, the computing device furtherdetect a second plurality of positions corresponding to the fingermovement by the three-dimensional gesture sensor. The computing devicedetermines whether the second plurality of positions contain a secondgesture cycle by: comparing at least two non-adjacent positions in thesecond plurality of positions; and upon determining that the at leasttwo non-adjacent positions match, determining that the second pluralityof positions contain the second gesture cycle. Upon determining that thesecond plurality of positions contains the second gesture cycle, thecomputing device creates a second gesture cycle record for the secondgesture cycle, compares the gesture cycle record and the second gesturecycle record, and upon determining that the second gesture cycle recordmatches the gesture cycle record, stores the second gesture cycle recordin the repetitive gesture record.

In another aspect of the present invention, the gesture cycle record andthe second gesture cycle record each includes one or more attributes ofthe gesture cycle or the second gesture cycle, and the one or moreattributes of the gesture cycle or the second gesture cycle includes oneor more of a group comprising: a gesture type of the gesture cycle orthe second gesture cycle; a duration of the gesture cycle or the secondgesture cycle; a span of the plurality of positions; an orientation ofthe plurality of positions; the plurality of positions; and a locationof the gesture cycle or the second gesture cycle. The computing devicecompares one or more of the attributes in the gesture cycle record withone or more of the attributes in the second gesture cycle record, andupon determining that the one or more of the attributes in the gesturecycle record matches the one or more of the attributes in the secondgesture cycle record, determines that the second gesture cycle recordmatches the gesture cycle record.

In another aspect of the present invention, the computing device sendsthe repetitive gesture record to a media player to apply the repetitivegesture to a presentation of a media content.

In another aspect of the present invention, the media player receivesthe repetitive gesture record from the computing device, where therepetitive gesture record includes a gesture type. The media playerretrieves the gesture type from the repetitive gesture record,determines an action associated with the gesture type, and applies theaction to the presentation of the media content.

In another aspect of the present invention, the repetitive gesturerecord includes one or more attributes of the repetitive gesture, wherethe one or more attributes of the repetitive gesture includes one ormore of a group comprising: a gesture type of the repetitive gesture; anorientation of the repetitive gesture; and a list of gesture cyclerecords comprising the gesture cycle record and a second gesture cyclerecord for a second gesture cycle.

In another aspect of the present invention, the action applied to thepresentation of the media content is based on a change of a speed or aduration of the finger movement between the gesture cycle and the secondgesture cycle.

In another aspect of the present invention, the media player includes agesture-content action list comprising a list of associations betweenmedia content types, gesture types, and actions. The media playerdetermines a media type of the media content and determines the actionassociated with the gesture type and the media type according to thelist of associations.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE FIGURES

FIG. 1 illustrates an exemplary embodiment of a process to play a mediacontent using a repetitive 3D-gesture.

FIG. 2 illustrates an embodiment of a media player computing device.

FIG. 3 illustrates an exemplary embodiment to capture a repetitive 3Dgesture.

FIG. 4 illustrates an exemplary embodiment of repetitive gestureattributes.

FIG. 5 illustrates an exemplary embodiment to process an inputrepetitive gesture when playing a media content.

FIG. 6 illustrates an exemplary embodiment to associate repetitivegestures to media content types.

FIG. 7 illustrates an exemplary embodiment to process an inputrepetitive gesture when playing a plurality of media content.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 illustrates an exemplary embodiment of a process for a user tonavigate presentation of a media content using a repetitive 3D-gesture.In one typical embodiment, user 101 uses smart glasses 301 to presentmedia content 355. Media content 355 is presented to user 101 by a mediaplayer 352, which includes a plurality of computing instructions storedon a computer readable storage medium, being executed by computingmodule 331 included in smart glasses 301. Presentation of media content355 may include presentation using a display 312 and/or a speaker 313 ofsmart glasses 301.

In one embodiment, user 101 uses her finger 112 to perform a repetitive3D (three dimensional or spatial) gesture 115. User 101 may use one ormore fingers when performing repetitive gesture 115. In a preferredembodiment, user 101 performs the gesture 115 near smart glasses 301,for example an inch or 4-8 inches away from smart glasses 301. In oneembodiment, smart glasses 301 includes gesture sensor panel 323, whichmay include a 3D-gesture sensor 324 to detect movement of finger 112 andrepetitive gesture 115. Gesture sensor panel 323 may include an imagingsensor 326 to detect the finger 112. Gesture sensor 324 includes atouchless sensor (not shown) that can detect the finger 112 without thefinger 112 touching the gesture sensor panel 323 or smart glasses 301.In one embodiment, gesture sensor 324 includes an electrode, whichgenerates electrical signals and detects electrical signal strength of aproximity area near gesture sensor panel 323. In one embodiment, thedetected electrical signal strength is used to determine a spatialposition of finger 112. In one embodiment, gesture sensor 324 includes adistance sensor (not shown) which generates a signal, such as soundsignal, optical signal or infrared signal, and detects reflected signalsto determine a spatial position of finger 112. In one embodiment,gesture sensor 324 includes imaging sensor 326. In one embodiment,gesture sensor panel 323 includes an imaging sensor 326 to be used inconjunction with gesture sensor 324 to determine a position of finger112.

In one embodiment, gesture sensor panel 323 is mounted onto a frame ofsmart glasses 301. In one embodiment, gesture sensor 324, and optionallyimaging sensor 326, are placed onto a frame of smart glasses 301.

In one embodiment, as user 101 is moving finger 112 to performrepetitive gesture 115, gesture sensor panel 323 detects and captures aplurality of spatial positions of finger 112 corresponding to repetitivegesture 115.

In one embodiment, after capturing repetitive gesture 115 in a form of aplurality of spatial positions of finger 112, gesture sensor panel 323passes captured repetitive gesture 115 to gesture analyzer 331 forprocessing. Gesture analyzer 331 sends analyzed repetitive gesture 115to media player 352. In one embodiment, media player 352 receivesanalyzed repetitive gesture 115 and determines the action to be appliedto the presentation of media content 355 based on the repetitive gesture115. For example, repetitive gesture 115 indicates a repetitiveclockwise circular motion perpendicular and outward from smart glasses301. In one embodiment, media player 352 determines that the action tobe applied is to fast forward the playing of a video of media content355. In one embodiment, media player 352 fast forwards the playing ofmedia content 355 faster and faster in response to repetitive gesture115 indicating a plurality of circular motions performed in a faster andfaster manner. In one embodiment, media content 355 includes a map, andrepetitive gesture 115 includes a plurality of repetitive tappingmotions with an initial direction of pushing outward away from the smartglasses 301. Media player 352 applies a continuously zooming out of thedisplay of the map in media content 355 based on the repetitive gesture115, with a zooming speed relative and corresponding to the speed ofrepetitive tapping motions. In one embodiment, repetitive gesture 115includes a plurality of tapping motions with an initial direction ofpulling inward towards the smart glasses 301. Media player 352 applies azooming in the display of the map in media content 355 accordingly.

In one embodiment, media player 352 examines media content 355 todetermine an appropriate action to apply repetitive gesture 115 topresenting media content 355. In one embodiment, media player 352applies different actions based on repetitive gesture 115 for differenttypes of media content 355. In one embodiment, media player 352 selectsthe action to apply to media content 355 based on different attributesof repetitive gesture 115, such as orientation, direction, position, ormotion type.

In one embodiment, media player 352 stops applying repetitive gesture115 when finger 112 stops performing repetitive gesture 115. In oneembodiment, media player 352 continues applying repetitive gesture 115even after finger 112 stops performing repetitive gesture 115. Mediaplayer 352 receives another gesture, either a non-repetitive gesture oranother repetitive gesture from gesture analyzer 331, and media player352 responds by stopping the application of repetitive gesture 115.

FIG. 2 illustrates an exemplary embodiment of hardware components of acomputing device which can be used for smart glasses. In one embodiment,computing device 510 includes a processor module 511, an output module515, an input module 517, a storage module 519 and a clock 514. In oneembodiment, computing device 510 also includes a network module 513. Inone embodiment, processor module 511 includes one or more generalprocessors, a multi-core processor, an application specific integratedcircuit based processor, a system on a chip (SOC) processor or anembedded processor. In one embodiment, output module 515 includes adisplay for displaying video signals, images and text, and an audiospeaker to play sound signals. In one embodiment, output module 515includes a data interface such as USB, HDMI, DVI, DisplayPort,thunderbolt connecting to a display or a speaker. In one embodiment,input module 517 includes a physical or logical keyboard, buttons, keys,or microphones. In one embodiment, input module 517 includes or connectsto one or more sensors such as an optical sensor, an infrared (IR)sensor, a camera sensor, a motion sensor, a direction sensor, aproximity sensor, a gesture sensor, or other sensors that is usable by auser to provide input to computing device 510. In one embodiment, inputmodule 517 includes a physical panel housing one or more sensors. In oneembodiment, storage module 519 includes a main memory, a hard disk drive(HDD), a solid state drive (SSD), a memory card, a ROM module, a RAMmodule, a USB disk, a storage compartment, a data storage component orother storage component. In one embodiment, network module 513 includeshardware and software to connect to a wireless data network such as acellular network, a mobile network, a Bluetooth network, an NFC network,a personal area network (PAN), a WiFi network, or a LiFi network.Storage module 519 includes executable instructions which when executedby the processor module 511 of computing device 510, implement one ormore functionalities of the present invention.

In one embodiment, computer device 510 includes a clock 514, whichprovides date and time information to computing device 510.

In one embodiment, computing device 510 does not include all of themodules. In one embodiment, computing device 510 does not have networkmodule 513 or clock 514.

Returning to FIG. 1, smart glasses 301 includes a computing devicehoused in a glasses-like wearable frame. In one embodiment, smartglasses 301, together with the included computing device, is a clip-onto a glass frame. In one embodiment, smart glasses 301 is worn similarto a normal pair of glasses. In one embodiment, smart glasses 301 is ahead-mounted device such as a helmet or a pair of goggles with headmounted trip. In one embodiment, user 101 wears smart glasses 301 inorder to use smart glasses 301.

In one embodiment, gesture sensor panel 323 includes a circuit boardmounted onto smart glasses 301, or onto a frame of smart glasses 301. Inone embodiment, display 312 is a head mounted display of smart glasses301. In one embodiment, display 312 has a size dimension similar to sizeof lenses of a pair of normal glasses. In one embodiment, display 312includes one or two display panels, facing towards the eyes of user 101so that user 101 can see display 312. In one embodiment, gesture sensorpanel 323 is mounted behind display 312, facing outward from smartglasses 301, so that gesture sensor panel 323 can detect finger 112. Inone embodiment, 3D gesture sensor 324 includes one or more electrodesplaced onto gesture sensor panel 323. In one embodiment, imaging sensor326 is mounted onto gesture sensor panel 323, e.g. near the center ofsensor panel 323 and at about eye level of user 101, so that imagingsensor 326 can take an image of what user 101 could be seeing. In oneembodiment, speaker 313 includes a headphone, an earphone, or abone-conducting speaker that is worn by user 101 or attached onto smartglasses 301.

In one embodiment, media content 355 includes a video, a movie, atelevision show, a television series, an animation, a music video, avideo playlist, a video presentation, a live tele-cast, a live feed, astreaming video, a live-streaming video, a feed obtained from a remotecamera via a data network, or a live feed streaming from imaging sensor326 or a camera attached to smart glasses 301. In one embodiment, mediacontent 355 includes a song, a piece of music, an audio file, astreaming audio, an audio book, a playlist of audio content, a podcast,broadcast radio, or a live feed of audio streaming obtained from a datanetwork or from a microphone attached to smart glasses 301. In oneembodiment, media content 355 includes one or more pictures or images, aphoto album, a gallery of images, or one or more animated pictures. Inone embodiment, media content 355 includes a document, a web page, oneor more messages or email messages, a list of documents or messages, ane-book, an electronic magazine or e-magazine, a web page, a note, or alist of notes. In one embodiment, media content 355 includes one or moreof above combination of media content.

In one embodiment, media player 352 includes a plurality of computerprogramming instructions, which when executed, presents media content355 over display 312 and/or speaker 313. Media player 352 may include ane-book reader, a web browser, a web-view software, an email client, anemail app, a social media messaging application, a music player, apodcast player, a video player, an application for YouTube®, Netflix®,Hulu®, Amazon Instant Video®, or other online video services, a comicbook electronic reader or application, an application aggregating newsand magazine articles, a notes application, a calendar application, anaddress book or contact application, or other applications handlingmedia content 355.

FIG. 3 illustrates an exemplary embodiment to capture a repetitive3D-gesture. In one embodiment, finger 112 moves to form repetitivegesture 115. Gesture sensor panel 323 detects movement of the finger 112and generates a plurality of capture positions 337 corresponding to thefinger's 112 movement in the repetitive gesture 115. Gesture sensorpanel 323 sends captured positions 337 to gesture analyzer 331. In oneembodiment, gesture sensor panel 323 continuously detects finger 112movement, captures addition positions, and includes the additionalcaptured positions in captured positions 337. In one embodiment, gesturesensor panel 323 makes available the captured positions 337 to gestureanalyzer 331 when additional positions are captured. In one embodiment,gesture analyzer 331 requests the captured positions 337 from thegesture sensor panel 323. Gesture analyzer 331 may send the request fromtime to time, periodically, or whenever it expects to receive thecaptured positions 337.

Gesture analyzer 331 examines captured positions 337 and determines ifcaptured positions 337 contains a gesture cycle 334, as describedfurther below. In one embodiment, captured positions 337 includes a listof a plurality of detected spatial positions of finger 112, listed inthe order that the positions are captured by gesture sensor panel 323.In one embodiment, captured positions 337 include a 3-dimensionalcoordinate position of the finger 112, indicating three coordinatevalues such as x-value, y-value, and z-value.

In one embodiment, gesture analyzer 331 examines captured positions 337and determines that there is a gesture cycle when a later position 375in captured positions 337 matches an earlier position 371 in capturedpositions 337. The two matching positions are not adjacent in thecaptured positions 337. For example, the earlier position 371 is in a5^(th) position in the captured positions 337, while the later position375 is in the 20^(th) position in the captured positions 337. When thelater position 375 matches the earlier position 371, the gestureanalyzer 331 determines that the positions from the 5^(th) position tothe 20^(th) position contain a gesture cycle. As illustrated in thisexample, the two matching positions are 14 positions apart. In oneembodiment, gesture analyzer 331 first determines that a middle positiondoes not match the earlier position 371, and then matches the laterposition 375 to the earlier position 371. When the later and earlierpositions 371, 375 are matched, gesture analyzer 331 determines that agesture cycle has been detected. In one embodiment, gesture analyzer 331creates a gesture cycle 334 record to store the detected gesture cycle.In one embodiment, gesture cycle 334 stores a plurality of positionsbetween earlier position 371 and later position 375, which includesmiddle position 373. In one embodiment, gesture cycle 334 stores onlynon-matching positions, i.e., no repeat positions, except possibly laterposition 375.

In one embodiment, upon detecting gesture cycle 334, gesture analyzer331 creates a repetitive gesture 332 record, and stores gesture cycle334 into repetitive gesture 332. In one embodiment, gesture analyzer 331continues processing captured positions 337 to detect a second gesturecycle 336, after detecting gesture cycle 334 in the same mannerdescribed above. Gesture analyzer 331 then matches gesture cycle 336 togesture cycle 334 of repetitive gesture 332. When gesture cycle 336matches gesture cycle 334, gesture analyzer 331 determines gesture cycle336 is a repeat cycle for repetitive gesture 332, and stores gesturecycle 336 into repetitive gesture 332.

In one embodiment gesture analyzer 331 reports repetitive gesture 332 tomedia player 352. In one embodiment, gesture analyzer 331 sendsrepetitive gesture 332 to media player 352 after detecting gesture cycle334. In one embodiment, gesture analyzer 331 sends repetitive gesture332 to media player 352 after detecting at least two gesture cycles,such as gesture cycle 334 and gesture cycle 336, in repetitive gesture332. Gesture analyzer 331 continuously examines captured positions 337to detect any further additional gesture cycles and matches detectedadditional gesture cycles to repetitive gesture 332. Upon determiningthat the additional gesture cycles match repetitive gesture 332, gestureanalyzer 331 modifies repetitive gesture 332 to store the additionalgesture cycles, and reports the modified repetitive gesture 332 with theadditional gesture cycles to media player 352.

In one embodiment, gesture analyzer 331 matches earlier position 371 andlater position 375 by matching their corresponding x-, y-, z-coordinatevalues. In one embodiment, in order to determine if the gesture cycle isan X-cycle, gesture analyzer 331 does not consider the x-values ofeither position. Gesture analyzer 331 compares the y-value and z-valuepair of later position 375 to the y-value and z-value pair of earlierposition 371 to determine if the positions are close. For example, they-value range is 0-65535 and the z-value range is or 0-32767. Twopositions are considered close to each other if the y-values of the twopositions are within 100 units apart and the z-values are within 75units apart, or the y-values are within 1000 units and z-values arewithin 1000 units. In one embodiment, the y-, z-coordinate range isdivided into 5×5 cells. Two positions are close to each other when thetwo positions are in the same cell. In one embodiment, two positions areclose to each other if they are within a pre-determined distance. Otherembodiments for the y-value and z-value ranges may be (0-1023, 0-511),(1-1280, 1-800), (0-65535, 0-65535) or other ranges.

In one embodiment, gesture analyzer 331 matches earlier position 371 andlater position 375 for detecting a Y-cycle by matching the x- andz-values of the two positions. In one embodiment, gesture analyzer 331matches the two positions for detecting a Z-cycle by comparing the x-and y-values of the two positions. In one embodiment, gesture analyzer331 matches the two position for detecting one or more of X-cycles,Y-cycles or Z-cycles simultaneously.

In one embodiment, gesture analyzer 331 divides an x-value range intotwo regions of space, defined as LEFT and RIGHT, and matches earlierposition 371 and later position 375 for detecting a LEFT X-cycle, whenboth positions are within the LEFT region or a RIGHT X-cycle when bothpositions are in the RIGHT region. In one embodiment, gesture analyzer331 may divide x-value range into three regions of space, defined asLEFT, CENTER and RIGHT. Gesture analyzer 331 detects a LEFT X-cycle,CENTER X-cycle or RIGHT X-cycle. Similarly, gesture analyzer 331 maydivide y-value range into a plurality of regions of space, defined asUP, CENTER, DOWN, or divide z-value range into a plurality of regions ofspace, defined as IN, CENTER, OUT. Gesture analyzer 331 may detect acorresponding Y-cycle or Z-cycle within a y-value region or a z-valueregion.

In one embodiment, gesture analyzer 331 detects two different cycles bymatching earlier position 371 and later position 375, such as an X-cycleand a Z-cycle. In this embodiment, finger 112 may perform repetitivegesture 115 in a slanted or diagonal direction. In one embodiment,gesture analyzer 331 stores both detected cycles into gesture cycle 334.In one embodiment, gesture analyzer 331 determines, using otherinformation, to record only one cycle, such as Z-cycle, into gesturecycle 334. In one embodiment, gesture analyzer 331 discards X-cycleafter detecting gesture cycle 336, which may be a Z-cycle, thusindicating gesture cycle 334 is a Z-cycle.

In one embodiment, gesture analyzer 331 collects additional informationinto gesture cycle 334, as illustrated in FIG. 4. Gesture cycle 334 mayinclude one or more attributes, including but not limited to a gesturetype; a speed or duration; a range or span of x-, y-, z-values; anorientation; a plurality of positions; and a location. The gesture cycle334 is stored in a list of gesture cycles in the repetitive gesture 332.As shown in FIG. 4, repetitive gesture 332 may include one or moreattributes, including but not limited to: gesture type; gesture cyclecount; list of gesture cycles; orientation or direction; and location.Returning to FIG. 3, in one embodiment, gesture sensor panel 323 storesin captured positions 337 an indication of the time at which a positionis captured. Gesture analyzer 331 calculates a cycle duration or speedof gesture cycle 334 using the time indications or timestamps betweenearlier position 371 and later position 375. In one embodiment, gestureanalyzer 331 calculates the maximum span of x-values, y-values andz-values of all positions in gesture cycle 334. In one embodiment,gesture analyzer 331 calculates the directions of changes from oneposition to the next position in gesture cycle 334. For example, gesturecycle 334 includes a Y-cycle, and the directions of changes x-value andz-value are (+, +), (+,+), (+,+), (+,−), (+,−), (−, −), (−, −), (−,+),and (−,+), where “+” includes an increase in value and “−” indicates adecrease in value. Gesture analyzer 331 determines this as a clockwiseorientation. An example of counter-clockwise orientation includes thedirections of changes being (+,−), (+,−), (+,+), (+,+), (−,+), (−,−),and (−,−). In one embodiment, gesture cycle 334 includes an X-cycle andgesture analyzer 331 determines an orientation of gesture cycle 334 bycalculating the directions of changes of y- and z-values from oneposition to the next position, and matching the directions of changes toa pre-determine rule regarding orientation. Similarly gesture analyzer331 calculates an orientation of a Z-cycle if gesture cycle 334 includesa Z-cycle.

In one embodiment, gesture cycle 334 includes a Z-cycle and thedirections of changes of x-value and y-value are (+,+), (+,+), (−,−),and (−,−). Gesture analyzer 331 calculates the Z-cycle orientation ordirection of gesture cycle 334 is LEFT-to-RIGHT. Other possibleorientations or directions include RIGHT-to-LEFT, IN-to-OUT, UP-to-DOWN,DOWN-to-IN, OUT-to-IN, DIAGONAL, UP-RIGHT-to-DOWN-LEFT,UP-LEFT-to-DOWN-RIGHT, and other similar orientations. In oneembodiment, gesture cycle 334 includes an orientation, such asclockwise, and a direction, such as DIAGONAL.

In one embodiment, gesture analyzer 331 determines a gesture type forgesture cycle 334. In one embodiment, gesture analyzer 331 determinesthe gesture type based on the span of gesture cycle 334. In oneembodiment, gesture cycle 334 includes an X-cycle and the y-span isabout the same as the z-span, or the ratio of y-span to z-span isbetween 0.75 and 1.25. Gesture analyzer 331 then determines that thegesture type is a circle. In one embodiment, gesture cycle 334 includesan X-cycle, and the y-span is zero or small but the z-span is large.Gesture analyzer 331 then determines that the gesture type is a swipe.In one embodiment, the y-span is small and the z-span is medium. Gestureanalyzer 331 determines the gesture type is a tap. In one embodiment,the ratio between the y-span and z-span is between ¼ and ½, and gestureanalyzer 331 determines the gesture type is an ellipse. In oneembodiment, gesture analyzer 331 determines a gesture type for gesturecycle 334 when gesture cycle 334 includes a Y-cycle or a Z-cycle. In oneembodiment, gesture analyzer 332 determines a gesture type to be anellipse, a circle, a tap, or a swipe when gesture cycle 334 includes aY-cycle or a Z-cycle. In one embodiment, gesture analyzer 331 processesgesture cycle 334 to determine other gesture types such as a knock, apush or pull.

In one embodiment, gesture analyzer 331 calculates a location of gesturecycle 334. In one embodiment, the location of gesture cycle 334 iscalculated based on the first position of gesture cycle 334. In oneembodiment, the location of gesture cycle 334 is calculated as a centerposition of gesture cycle 334, based on the plurality of positions ofgesture cycle 334. In one embodiment, the location of gesture cycle 334is calculated based on a position according to the mean x-value,y-value, and z-value of the plurality of positions of gesture cycle 334.In one embodiment, gesture analyzer 331 sets location of gesture cycle334 as location of repetitive gesture 332.

In one embodiment, gesture analyzer 331 detects gesture cycle 336 anddetermines additional attributes for gesture cycle 336, such as agesture type, speed or duration, a range and span, orientation, aplurality of positions, and a location.

In one embodiment, gesture analyzer 331 matches gesture cycle 334 andgesture cycle 336 by matching one or more attributes of the two gesturecycles. In one embodiment, the gesture types or the two orientations ofthe two gesture cycles do not match, and gesture analyzer 331 determinesthat the two gesture cycles do not match. In one embodiment, the spansof the two gesture cycles differ beyond a predetermined threshold, andgesture analyzer 331 determines that the two gesture cycles do notmatch. In one embodiment, the gesture types, the orientations, thespans, and optionally the locations of the two gesture cycles match,gesture analyzer 331 concludes that the two gesture cycles match.

In one embodiment, upon concluding gesture cycle 336 matches gesturecycle 334, gesture analyzer 331 adds gesture cycle 336 to the list ofgesture cycles in repetitive gesture 332. In one embodiment, gestureanalyzer 331 store gesture type and orientation of gesture cycle 334 asgesture type and orientation of repetitive gesture 332. In oneembodiment, gesture analyzer 331 maintains a gesture cycle count for thenumber of gesture cycles in the list of gesture cycles and incrementsthe count for repetitive gesture 332. In one embodiment, gestureanalyzer 331 updates location of repetitive gesture 332 based onlocation of gesture cycle 336. In one embodiment, gesture analyzer 331determines that the location of the repetitive gesture 332 is to be acenter location between location of gesture cycle 334 and location ofgesture cycle 336, or more generally, a center location among locationsof the list of gesture cycles in repetitive gesture 332. In oneembodiment, gesture analyzer 331 does not update location of repetitivegesture 332 and instead uses location of first gesture cycle in the listof gesture cycles as the location of repetitive gesture 332.

In one embodiment, when gesture analyzer 331 determines gesture cycle336 does not match gesture cycle 334, gesture analyzer 331 indicatesrepetitive gesture 332 is completed by sending a notification to mediaplayer 352. In one embodiment, gesture analyzer 331 creates a newrepetitive gesture based on gesture cycle 336. In one embodiment,repetitive gesture 332 includes a mode attribute indicating gestureanalyzer 331 is continuing to detect a next gesture cycle of repetitivegesture 332. In one embodiment, gesture analyzer 331 sets the modeattribute to “DETECTING”, “0” or “NON-FINAL” when storing gesture cycle334 into repetitive gesture 332. Upon determining gesture cycle 336 doesnot match gesture cycle 334, gesture analyzer 331 indicates repetitivegesture 332 is completed by setting the mode attribute to “FINAL”, “1”or “NON-DETECTING”.

FIG. 5 illustrates an exemplary embodiment to process a repetitivegesture while playing a media content. Media player 352 is presentingmedia content 355 onto display 312 or speaker 313. In one embodiment,gesture analyzer 331 detects repetitive gesture 332. Repetitive gesture332 includes gesture cycle 334. In one embodiment, gesture analyzer 331sends repetitive gesture 332 to media player 352. In one embodiment,media player 352 requests and receives repetitive gesture 332 fromgesture analyzer 331.

In one embodiment, media player 352 processes repetitive gesture 332 andchanges the presentation of media content 352 according to the gesturecycles in the list of gesture cycles. Media player 352 retrieves gesturetype 421 of repetitive gesture 332 and determines an action 453associated with the gesture type 421 to apply to media content 355. Inone embodiment, media player 352 determines media content type 356 ofmedia content 355. Media player 352 may retrieve media content type 356as an attribute of media content 355, or determines media content type356 based on a receiving mechanism of media content 355, such as a datanetwork protocol, a file name extension, a capturing mechanism using acamera or microphone or other mechanism. In one embodiment, media player352 includes a gesture-content action list 451 and selects action 453from gesture-content action list 451 associated with gesture type 421and media content type 356. FIG. 6 illustrates an embodiment ofgesture-content action list 451. For example, a small circle gesture fora video media content is associated with an action of forwarding orrewinding; a swipe gesture for a video is associated with a skip of achapter or episode; a large circle gesture for audio media content isassociated with a skip of a track or a playlist item; a tap gesture foran e-magazine content is associated with a zoom in or zoom out. In oneembodiment, media player 352 uses other attributes in repetitive gesture332, such as a span of gesture cycle 334, to determine if repetitivegesture 332 is a small circle or a wide swipe gesture, in order toselect an action. In one embodiment, media player 352 matches mediacontent type 356, gesture type 421 and optionally other attributes inrepetitive gesture 332 to select an action 453.

In one embodiment, media player 453 applies action 453 to thepresentation of media content 355, using other attributes of repetitivegesture 332. In one embodiment, action 453 is to forward or to rewind avideo of media content 355. Media player 352 retrieves orientation ofrepetitive gesture 332. In one embodiment, the orientation of repetitivegesture 332 is clockwise, and media player 352 fast forwards the displayof the video of media content 355. In one embodiment, the orientation iscounter-clockwise, and media player 352 rewinds the display of the videoof media content 355. In one embodiment, media player 352 examines theduration of gesture cycle 334 of repetitive gesture 332 and determinesthe speed of the forwarding or rewinding action.

In one embodiment, action 453 is to scroll a list in media content 355.Media player 352 determines the direction of scrolling action using theorientation of repetitive gesture 332, and the speed of scrolling actionusing the duration of gesture cycle 334.

Other actions for action 453 may require different decision made bymedia player 352 based on orientation of repetitive gesture 332. In oneembodiment, media player 352 applies action 453 according to orientationof repetitive gesture 332 and a factor based on a user preference or acontent type. In one embodiment, a user preference indicates a left handmotion. Media player 352 rewinds the display of the video of mediacontent 355 when the orientation is clockwise and forwards the displayof the video when the orientation is counter-clockwise. In oneembodiment, media content 355 includes a document in a right-to-leftlanguage. Media player 352 applies action 453 to flip the documentforward when the orientation of repetitive gesture 332 is from left toright.

In one embodiment, gesture analyzer 331 detects a second gesture cycle336 for repetitive gesture 332. In one embodiment, media player 352receives gesture cycle 336 of repetitive gesture 332 while applyingaction 453. Media player 352 includes gesture cycle 336 attributes infurther applying action 453. In one embodiment, action 453 is to fastforward video content in media content 355. Media player 352 retrievesduration of gesture cycle 336 and determines the duration is shorterthan gesture cycle 334, meaning gesture cycle 336 is performed fasterthan gesture cycle 334. Media player 352 applies a faster speed inforwarding the video content. For example, media player 352 applies 2times as fast or 1.5 times as fast as current speed. In one embodiment,the duration of gesture cycle 336 is longer than the duration of gesturecycle 334, and media player 352 slows the speed of forwarding, forexample half the current speed or 75% of the current speed. In oneembodiment, media player 352 changes the speed of action 453 when thereis a change of span of gesture cycle 336 from the span of gesture cycle334.

In one embodiment, gesture analyzer 331 detects an end of the list ofgesture cycles in repetitive gesture 332 and sends a notification tomedia player 352. In one embodiment, media player 352 responds to thenotification by stopping the application of action 453. In oneembodiment, gesture analyzer 331 does not immediately stop applyingaction 453, but instead slows the speed of action 453 to provide asmooth presentation of media content 355 to avoid a sudden stop of theaction 453.

In one embodiment, media player 352 includes a pre-configuredgesture-content action list 451. In one embodiment, media player 352obtains gesture-content action list 451 from a storage module, mediacontent 355, or from a source providing media content 355. In oneembodiment, media player 352 obtains gesture-content action list 451from a user of media player 352. In one embodiment, gesture-contentaction list 451 is pre-configured according to a user preference. Forexample, the action associated with a repetitive gesture may differbetween a right-handed user and a left-handed user, between users ofdifferent cultures, or for users with physical impairments.

In one embodiment, media content 355 includes action 453, which may be acomputer programming instruction or a computer scripting instructionembedded in media content 355. For example, media content 355 mayinclude a JavaScript, a Java object, a visual basic script, or embeddedcomputer instructions. Media player 352 retrieves action 453 from mediacontent 355 and applies action 453.

In one embodiment, media player 352 is presenting a plurality of mediacontent such as media content 355 and media content 357 as illustratedin FIG. 7. In one embodiment, media content 355 is presented on adisplay area 315 of display 312, and media content 357 is presented on adisplay area 317 of display 312. In one embodiment, media player 352receives repetitive gesture 332 and selects a media content to applyrepetitive gesture 332. In one embodiment, media content 355 is markedactive and media player 352 selects media content 355 for processingrepetitive gesture 332. In one embodiment, media player 352 retrieveslocation 422 of repetitive gesture 332 and matches location 422 todisplay area 315 and displayer area 317. In one embodiment, location 422is inside display area 317, and media player 352 selects media content357 to process repetitive gesture 332. In one embodiment, location 422indicates a right side, and display area 317 is on the right side ofdisplay 312. Media player thus 352 selects media content 357. In oneembodiment, location 422 indicates an outer region or a large z-value,and display area 317 is smaller than display area 315. Media player 352thus selects media content 357. In one embodiment, location 422indicates an inner region or a small z-value, and display area 315 islarger than display area 317. Media player 352 selects media content355.

The following description is presented to enable one of ordinary skillin the art to make and use the present invention and is provided in thecontext of a patent application and its requirements. Variousmodifications to the embodiment will be readily apparent to thoseskilled in the art and the generic principles herein may be applied toother embodiments. Thus, the present invention is not intended to belimited to the embodiment shown but is to be accorded the widest scopeconsistent with the principles and features described herein.

Reference in this specification to “one embodiment”, “an embodiment”,“an exemplary embodiment”, or “a preferred embodiment” means that aparticular feature, structure, or characteristic described in connectionwith the embodiment is included in at least one embodiment of theinvention. The appearances of the phrase “in one embodiment” in variousplaces in the specification are not necessarily all referring to thesame embodiment, nor are separate or alternative embodiments mutuallyexclusive of other embodiments. Moreover, various features are describedwhich may be exhibited by some embodiments and not by others. Similarly,various requirements are described which may be requirements for someembodiments but not other embodiments. In general, features described inone embodiment might be suitable for use in other embodiments as wouldbe apparent to those skilled in the art.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified local function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

Although the present invention has been described in accordance with theembodiments shown, one of ordinary skill in the art will readilyrecognize that there could be variations to the embodiments and thosevariations would be within the spirit and scope of the presentinvention. Accordingly, many modifications may be made by one ofordinary skill in the art without departing from the spirit and scope ofthe appended claims.

What is claimed is:
 1. A system, comprising: a three-dimensional sensorpanel for detecting a plurality of three-dimensional (3D) positionscorresponding to a finger movement in a 3D space, the 3D spacedetectable by the 3D sensor panel and comprising a first dimension, asecond dimension, and a third dimension, the first dimension comprisinga range of first dimension coordinates, the range of first dimensioncoordinates grouped into at least a first region of space and a secondregion of space; a controller; and a non-transitory computer readablestorage medium comprising computer readable program code embodiedtherein, wherein when executed by the controller causes the controllerto: (a) determine that the plurality of 3D positions contain a gesturecycle, comprising: (a1) compare a set of positions in the plurality of3D positions, the set of positions comprising at least two non-adjacentpositions in the plurality of 3D positions, each of the plurality of 3Dpositions comprising a first dimension coordinate, a second dimensioncoordinate, and a third dimension coordinate; and (a2) upon determiningthat the set of positions in the plurality of 3D positions match,determine that the plurality of 3D positions contain the gesture cycle;(b) determine that the gesture cycle comprises a first dimension cyclewith first dimension coordinates in the first region of space,comprising: (b1) determine that the first dimension coordinates in theplurality of 3D positions are each in the first region of space; and(b2) upon determining that the first dimension coordinates in theplurality of 3D positions are each in the first region of space,determine that the gesture cycle contains the first dimension cycle inthe first region of space; and (c) create a gesture cycle record for thegesture cycle, the gesture cycle record comprising informationassociated with the gesture cycle, the information comprising the firstdimension cycle in the first region of space.
 2. The system of claim 1,wherein the system comprises a pair of smart glasses, wherein the 3Dsensor panel is mounted within the pair of smart glasses.
 3. The systemof claim 1, wherein the controller is further caused to: (d) determine agesture type of the gesture cycle based at least on the first dimensioncycle in the first region of space; and (e) store the gesture type inthe gesture cycle record as additional information associated with thegesture cycle.
 4. The system of claim 3, wherein the determine (d)comprises: (d1) determine the gesture type of the gesture cycle based atleast on the first dimension, cycle in the first region of space, asecond dimension span of a second set of positions in the plurality of3D positions, and a third dimension span of the second set of positions.5. The system of claim 3, wherein the controller is further caused to:(1) process the gesture cycle record for a media content comprising:(f1) retrieve the gesture type from the gesture cycle; (f2) determine anaction, associated with the gesture type; and (g) apply the action tothe media content.
 6. The system of claim 5, wherein the actioncomprises one or more of the following: forwarding of the media content;rewinding of the media content; or scrolling of the media content. 7.The system of claim 1, wherein the second dimension comprises a range ofsecond dimension coordinates, the range of second dimension coordinatesgrouped into at least a third region of space and a fourth region ofspace, wherein the controller is further caused to: (d) determine thatthe gesture cycle comprises a second dimension cycle with seconddimension coordinates in the third region of space, comprising: (d1)determine that the second dimension coordinates in the plurality of 3Dpositions are each in the third region of space; and (d2) upondetermining that the second dimension coordinates in the plurality of 3Dpositions are each in the third region of space, determine that thegesture cycle further contains the second dimension cycle in the thirdregion of space; and (e) store the second dimension cycle in the thirdregion of space in the information in the gesture cycle record.
 8. Thesystem of claim 1, further comprising: (d) determine that the pluralityof 3D positions contain a second gesture cycle, comprising: (d1) comparea second set of positions in the plurality of 3D positions, the secondset of positions comprising at least two other non-adjacent positions inthe plurality of 3D positions; and (d2) upon determining that the secondset of positions in the plurality of 3D positions match, determine thatthe plurality of 3D positions contain the second gesture cycle; (e)determine that the second gesture cycle comprises another firstdimension cycle with first dimension coordinates in the second region ofspace, comprising: (e1) determine that the first dimension coordinatesin the other first dimension cycle are each in the second region ofspace; and (e2) upon determining that the first dimension coordinates inthe other first dimension cycle are each in the second region of space,determine that the second gesture cycle contains the first dimensioncycle in the second region of space; and (c) store in the gesture cyclerecord information associated with the second gesture cycle, theinformation associated with the second gesture cycle comprising theother first dimension cycle in the second region of space.
 9. A methodof using a three-dimensional sensor panel in determining gesture cycleinformation, comprising: (a) receiving, by a controller of a computingdevice, a plurality of three-dimensional (3D) positions, the pluralityof 3D positions corresponding to a finger movement in a 3D spacedetectable by the 3D sensor panel and comprising a first dimension, asecond dimension, and a third dimension, the first dimension comprisinga range of first dimension coordinates, the range of first dimensioncoordinates grouped into at least a first region of space and a secondregion of space; (b) determining, by the controller, that the pluralityof 3D positions contain a gesture cycle, comprising: (b1) comparing, bythe controller, a set of positions in the plurality of 3D positions, theset of positions comprising at least two non-adjacent positions in theplurality of 3D positions, each of the plurality of 3D positionscomprising a first dimension coordinate, a second dimension coordinate,and a third dimension coordinate; and (b2) upon determining that the setof positions in the plurality of 3D positions match, determining, by thecontroller, that the plurality of 3D positions contain the gesturecycle; (c) determining, by the controller, that the gesture cyclecomprises a first dimension cycle with first dimension coordinates inthe first region of space, comprising: (c1) determining, by thecontroller, that the first dimension coordinates in the plurality of 3Dpositions are each in the first region of space; and (c2) upondetermining that the first dimension coordinates in the plurality of 3Dpositions are each in the first, region of space, determining, by thecontroller, that the gesture cycle contains the first dimension cycle inthe first region of space; and (d) creating, by the controller, agesture cycle record for the gesture cycle, the gesture cycle recordcomprising information associated with the gesture cycle, theinformation comprising the first dimension cycle in the first region ofspace.
 10. The method of claim 9, further comprising: (e) determining,by the controller, a gesture type of the gesture cycle based at least onthe first dimension cycle in the first region of space; and (f) storing,by the controller, the gesture type in the gesture cycle record asadditional information associated with the gesture cycle.
 11. The methodof claim 10, wherein the determining (e) comprises: (e1) determining, bythe controller, the gesture type of the gesture cycle based at least onthe first dimension cycle in the first region of space, a seconddimension span of a second set of positions in the plurality of 3Dpositions, and a third dimension span of the second set of positions.12. The method of claim 10, further comprising: (g) processing, by thecontroller, the gesture cycle record for a media content, comprising:(g1) retrieving the gesture type from the gesture cycle; (g2)determining an action associated with the gesture type; and (h) applyingthe action to the media content.
 13. The method of claim 12, wherein theaction comprises one or more of the following: forwarding of the mediacontent; rewinding of the media content or scrolling of the mediacontent.
 14. The method of claim 9, wherein the second dimensioncomprises a range of second dimension coordinates, the range of seconddimension coordinates grouped into at least a third region of space anda fourth region of space, further comprising: (e) determining, by thecontroller, that the gesture cycle comprises a second dimension cyclewith second dimension coordinates in the third region of space,comprising: (e1) determining, by the controller, that the seconddimension coordinates in the plurality of 3D positions are each in thethird region of space; and (e2) upon determining that the seconddimension, coordinates in the plurality of 3D positions are each in thethird region of space, determining, by the controller, that the gesturecycle further contains the second dimension cycle in the third region ofspace; and (f) storing, by the controller, the second dimension cycle inthe third region of space in the information in the gesture cyclerecord.
 15. The method of claim 9, further comprising: (e) determining,by the controller, that the plurality of 3D positions contain a secondgesture cycle, comprising: (d1) comparing, by the controller, a secondset of positions in the plurality of 3D positions, the second set ofpositions comprising at least two other non-adjacent positions in theplurality of 3D positions; and (d2) upon determining that the second setof positions in the plurality of 3D positions match, determining, by thecontroller, that the plurality of 3D positions contain the secondgesture cycle; (f) determining, by the controller that the secondgesture cycle comprises another first dimension cycle with firstdimension coordinates in the second region of space, comprising: (f1)determining, by the controller that the first dimension coordinates inthe other first dimension cycle are each in the second region of space;and (f2) upon determining that the first dimension coordinates in theother first dimension cycle are each in the second region of space,determining, by the controller, that the second gesture cycle containsthe first dimension cycle in the second region of space; and (g)storing, by the controller, in the gesture cycle record informationassociated with the second gesture cycle, the information associatedwith the second gesture cycle comprising the other first dimension cyclein the second region of space.
 16. A non-transitory computer readablemedium comprising computer readable program code embodied therein,wherein when executed by a controller causes the controller to: (a)receive a plurality of three-dimensional (3D) positions, the pluralityof 3D positions corresponding to a finger movement in a 3D spacedetectable by the 3D sensor panel and comprising a first dimension, asecond dimension, and a third dimension, the first dimension comprisinga range of first dimension coordinates, the range of first dimensioncoordinates grouped into at least a first region of space and a secondregion of space; (b) determine that the plurality of 3D positionscontain a gesture cycle, comprising: (b1) compare a set of positions inthe plurality of 3D positions, the set of positions comprising at leasttwo non-adjacent positions in the plurality of 3D positions, each of theplurality of 3D positions comprising a first dimension coordinate, asecond dimension coordinate, and a third dimension coordinate; and (b2)upon determining that the set of positions in the plurality of 3Dpositions match, determine that the plurality of positions contain thegesture cycle; (c) determine that the gesture cycle comprises a firstdimension cycle with first dimension coordinates in the first region ofspace, comprising: (c1) determine that the first dimension coordinatesin the plurality of 3D positions are each in the first region of space;and (c2) upon determining that the first dimension coordinates in theplurality of 3D positions are each in the first region of space,determine that the gesture cycle contains the first dimension cycle inthe first region of space; and (d) create a gesture cycle record for thegesture cycle, the gesture cycle record comprising informationassociated with the gesture cycle, the information comprising the firstdimension cycle in the first region of space.
 17. The medium of claim16, wherein the controller is further caused to: (e) determine a gesturetype of the gesture cycle based at least on the first dimension cycle inthe first region of space; and (f) store the gesture type in the gesturecycle record as additional information associated with the gesturecycle.
 18. The medium of claim 17, wherein the determine (e) comprises:(e1) determine the gesture type of the gesture cycle based at least onthe first dimension cycle in the first region of space, a seconddimension span of a second set of positions in the plurality of 3Dpositions, and a third dimension span of the second set of positions.19. The medium of claim 17, wherein the controller is further caused to:(g) process the gesture cycle record for a media content, comprising:(g1) retrieve the gesture type from the gesture cycle; (g2) determine anaction associated with the gesture type; and (h) applying the action tothe media content.
 20. The medium of claim 19, wherein the actioncomprises one or more of the following: forwarding of the media content;rewinding of the media content; or scrolling of the media content. 21.The medium of claim 16, wherein the second dimension comprises a rangeof second dimension coordinates, the range of second dimensioncoordinates grouped into at least a third region of space and a fourthregion of space, wherein the controller is further caused to: (e)determine that the gesture cycle comprises a second dimension cycle withsecond dimension coordinates in the third region of space, comprising:(e1) determine that the second dimension coordinates in the plurality of3D positions are each in the third region of space; and (e2) upondetermining that the second dimension coordinates in the plurality of 3Dpositions are each in the third region of space, determine that thegesture cycle further contains the second dimension cycle in the thirdregion of space; and (f) store the second dimension cycle in the thirdregion of space in the information in the gesture cycle record.
 22. Themedium of claim 16, wherein the controller is further caused to: (e)determine that the plurality of 3D positions contain a second gesturecycle, comprising: (e1) compare a second set of positions in theplurality of 3D positions, the second set of positions comprising atleast two other non-adjacent positions in the plurality of 3D positions;and (e2) upon determining that the second set of positions in theplurality of 3D positions match, determine that the plurality of 3Dpositions contain the second gesture cycle; (f) determine that thesecond gesture cycle comprises another first dimension cycle with firstdimension coordinates in the second region of space, comprising: (f1)determine that the first dimension coordinates in the other firstdimension cycle are each in the second region of space; and (f2) upondetermining that the first dimension coordinates in the other firstdimension cycle are each in the second region of space, determine thatthe second gesture cycle contains the first dimension cycle in thesecond region of space; and (g) store in the gesture cycle recordinformation associated with the second gesture cycle, the informationassociated with the second gesture cycle comprising the other firstdimension cycle in the second region of space.